package com.application.chiettinhdienluc.control;

import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.List;

import com.application.chiettinhdienluc.model.VatTuChiTietModel;

public class VattuInfoListControl extends ArrayList<VatTuChiTietModel> {

	private static final long serialVersionUID = 2963755199959921000L;
	private volatile HashMap<String, VatTuChiTietModel> hashVattuInfo = new HashMap<String, VatTuChiTietModel>();

	@Override
	public void clear() {
		hashVattuInfo.clear();		
		super.clear();
	}

	@Override
	public boolean add(VatTuChiTietModel object) {
		boolean value = false;
		if(hashVattuInfo.put(object.getMaVatTu(), object) == null) {
			value = super.add(object);
		}
		return value;
	}

	@Override
	public boolean addAll(Collection<? extends VatTuChiTietModel> collection) {
		boolean value = false;
		for (VatTuChiTietModel vattuInfo : collection) {
			if(vattuInfo != null)
			{
				if (hashVattuInfo.put(vattuInfo.getMaVatTu(), vattuInfo) == null) {
					value = true;
					value = super.add(vattuInfo);
				}
			}
		}
		return value;
	}

	public int updateOrAdd(List<VatTuChiTietModel> listFriend) {
		int resultValue = 0;
		for (VatTuChiTietModel obj : listFriend) {

			if (contain(obj.getMaVatTu())) {
				VatTuChiTietModel objOld = get(obj.getMaVatTu());
				resultValue++;
			} else {
				try {
					hashVattuInfo.put(obj.getMaVatTu(), obj);
					resultValue++;
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		}
		return resultValue;
	}


	@Override
	public VatTuChiTietModel remove(int index) {
		hashVattuInfo.remove(get(index).getMaVatTu());
		return super.remove(index);
	}

	@Override
	public boolean remove(Object object) {
		if (object instanceof VatTuChiTietModel) {
			hashVattuInfo.remove(((VatTuChiTietModel) object).getMaVatTu());
		}
		return super.remove(object);
	}

	public void clearFriendListCache() {

	}

	public boolean contain(String uid) {
		return hashVattuInfo.containsKey(uid);
	}

	public VatTuChiTietModel get(String uid) {
		return hashVattuInfo.get(uid);
	}
}
